import { getWxCode, wxLogin, wxLoginByPhone } from "@/api/auth";
import { setToken } from "@/utils/cache";
export default class UseLogin {
  // 从后端接口获取的微信登录参数，非微信code
  // wxLoginParameters = ref<{
  //   sate: string; // 目前我看只用到这个
  // }>({
  //   sate: "",
  // });
  // 登录按钮状态，防止重复点击
  isLoading = ref<boolean>(false);
  isShowPhoneButton = ref<boolean>(false);
  private openId = ref<string>("");
  constructor() {
    // this.getWxLoginInfo();
  }

  // getWxLoginInfo = async () => {
  //   try {
  //     const data = await getWxLoginParameters();
  //     this.wxLoginParameters.value.sate = data.state;
  //   } catch (error) {
  //     console.log(error);
  //     uni.showToast({
  //       icon: "none",
  //       title: "获取登录信息失败！请稍后重试",
  //     });
  //   }
  // };

  // 获取手机号
  // 2. 获取手机号
  onGetPhoneNumber = async (e: AnyObject) => {
    if (e.detail.errMsg.includes("deny")) {
      return uni.showToast({ title: "用户拒绝授权", icon: "none" });
    }
    // 新版接口（推荐）：使用code换取手机号
    if (e.detail.code) {
      const { data } = await wxLoginByPhone({ code: e.detail.code, openId: this.openId.value });
      if (!data) return;
      setToken(data.token);
    }
  };

  // 微信登录
  wxLogin = async () => {
    try {
      this.isLoading.value = true;
      const { code } = await getWxCode();
      if (!code) return;

      const { data } = await wxLogin({ code });
      if (!data) return;
      this.openId.value = data.openId;
      // 账号未绑定手机号
      if (!data.token) {
        this.isShowPhoneButton.value = true;
        uni.showToast({
          icon: "none",
          title: "您未绑定手机，请先绑定手机",
        });
      } else {
        setToken(data.token);
      }
    } catch (error) {
      console.error(error);
      uni.showToast({
        icon: "none",
        title: "登录失败",
      });
    } finally {
      this.isLoading.value = false;
    }
  };
}
